<?php
include('../../include/functions.inc.php');
$lsEmpresas = $db->query_select("cllg_empresa");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Facturacion Empresas</title>
        <script src="../../js/jquery.js" type="text/javascript"></script>
        <script src="../../js/jquery.ui.min.js" type="text/javascript"></script>
        <script src="../../js/jquery.fieldownload.js" type="text/javascript"></script>
        <link href="../../js/ui/jquery.ui.min.css" rel="stylesheet" type="text/css" />
        <link href="../../bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
        <script src="../../bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
        <script src="../../js/angulars1.7.min.js" type="text/javascript"></script>

        <style type="text/css">
            body{
                font-size: 12px !important;
            }
            #tabs{
                margin: 5px;
            }
            .modal{
                position:fixed;
                overflow-y: auto;
                max-height:90%;
                margin-top:-3%;
            }
        </style>
    </head>

    <body>
        <form   method="post" action="data.php" >
            <input type="hidden" name="op" id="op" value="" />
            <input type="hidden" name="idAlumno" id="idAlumno" value="" />
            <div id="tabs">
                <ul id="tabs_cont" class="nav nav-tabs">
                    <li class="active"  ><a  href="#tabs-1">Facturacion Empresas</a>
                    </li>
                </ul>
                <div ng-app="cargos-app" ng-controller="cargos-area" class="tab-content">
                    <div id="tabs-1" class="tab-pane active">
                        <table width="100%">
                            <tr>
                                <td>
                                    <div class="controls-row">
                                        <label for="empresa">Empresa:</label>
                                        <select ng-model="pagoempresa.empresa" id="idEmpresa" name="idEmpresa">
                                            <option value="">-Seleccionar-</option>
                                            <?php foreach ($lsEmpresas as $e) { ?>
                                                <option value="<?php echo $e["ID"] ?>"><?php echo $e["NOMBRE"] ?></option>
                                            <?php } ?>
                                        </select>
                                        <button type="button" id="btnloadalumnos" class="btn btn">Cargar</button>
                                    </div>
                                    <div class="controls-row">
                                        <label for="estadofac">Estado Factura: </label>
                                        <select ng-model="pagoempresa.status" id="estadofac" name="estadofac">
                                            <option value="">--Seleccione el estado--</option>
                                            <option value="1">Pagada</option>
                                            <option value="2">En Tramite</option>
                                        </select>
                                        <script type="text/javascript">
                                            var selEst = {};
                                            var loadAlumnos = function() {
                                                $("#idAlumno").val($("#empresa").val());
                                                $("#op").val("alumnos");
                                                $("#listaEstudiantes").load("data.php",
                                                        $(document.forms[0]).serialize(), formatCtrls);

                                            };
                                            var loadDataAlumno = function(idAlumno, nombre) {
                                                selEst = {"CARNET": idAlumno, "NOMBRE": nombre, "PAGO_TOT": 0.00};
                                                if (cargosLs.length > 0 && !confirm('Si cambia de alumno descartaran los cargos a pagar del alumno actual!')) {
                                                    return;
                                                }
                                                $("#idAlumno").val(selEst.CARNET);
                                                $("#op").val("cargos");
                                                $("#listaCargosEstudiante").load("data.php",
                                                        $(document.forms[0]).serialize(), formatCtrls);
                                                $("#opcionescargos1").show();
                                                $("#opcionescargos2").show();
                                            };
                                            $("#idEmpresa").change(loadAlumnos);
                                            $("#btnloadalumnos").click(loadAlumnos);
                                        </script>
                                    </div>
                                    <div class="controls-row">
                                        <label for="fechapago">Fecha del Pago:</label>
                                        <input value="" required type="text" ng-model="pagoempresa.fechapago" datepicker id="fechapago" name="fechapago" />
                                    </div>
                                    <div id="cargos-area">
                                        <div id="listaEstudiantes" style=" margin-top: 10px; margin-bottom: 10px; width: 600px;" class="datatable">
                                        </div>
                                        <div id="opcionescargos1" class="btn-group">
                                            <button type="button" ng-click="addEst();" class="btn btn-success">Agregar Cargos</button>
                                            <button type="button" ng-click="undoEst();" class="btn btn-success">Cancelar</button>
                                        </div>
                                        <div id="listaCargosEstudiante" style=" margin-top: 10px; margin-bottom: 10px; width:1200px;" class="datatable">
                                        </div>
                                        <div id="opcionescargos2" class="btn-group">
                                            <button type="button" ng-click="addEst();" class="btn btn-success">Agregar Cargos</button>
                                            <button type="button" ng-click="undoEst();" class="btn btn-success">Cancelar</button>
                                        </div>
                                        <script type="text/javascript">
                                            $("#opcionescargos1").hide();
                                            $("#opcionescargos2").hide();
                                        </script>
                                        <div id="listaPagosEstudiantes" style=" margin-top: 10px; margin-bottom: 10px; width: 450px;">
                                            <table class="table table-bordered table-striped table-hover">
                                                <thead>
                                                    <tr>
                                                        <td>Carnet</td>
                                                        <td>Estudiante</td>
                                                        <td>Pago Total</td>
                                                        <td></td>
                                                    </tr>
                                                </thead>
                                                <tbody>
                                                    <tr ng-repeat="est in estudiantes">
                                                        <td>{{est.CARNET}}</td>
                                                        <td>{{est.NOMBRE}}</td>
                                                        <td>{{est.PAGO_TOT}}</td>
                                                        <td>
                                                            <button type="button" class="btn btn-warning" ng-click="delEst(est.CARNET);" >Quitar</button>
                                                        </td>
                                                    </tr>
                                                </tbody>
                                                <tbody>
                                                    <tr><td colspan=""></td>
                                                        <td >Total</td>
                                                        <td >{{total}}</td>
                                                        <td ></td></tr>

                                                </tbody>
                                            </table>
                                        </div>
                                        <div ng-show="pagoempresa.total>0" class="btn-group">
                                            <button type="button" ng-click="preparaFactura();">Facturar</button>
                                            <button type="button" ng-click="limpiarTodo();">Cancelar</button>
                                        </div>
                                    </div>
                                </td>
                            </tr>
                        </table>
                    </div>
                    <!-- Modal -->
                    <div id="formapagomodal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true">
                        <div class="modal-header">
                            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                            <h3 id="modalLabel">Forma de Pago</h3>
                        </div>
                        <div class="modal-body">
                            <div style="margin-top: 5px;" id="formapago" >
                                <fieldset> 
                                    <div class="controls-row" >
                                        <span class="help-block" style="font-size: 12px; font-weight: bold;">Total a pagar: {{pagoempresa.total}}</span></div>
                                    <div class="controls-row" >
                                        <label for="efectivo">Efectivo:</label>
                                        <input type="text" id="efectivo" ng-model="pagoempresa.efectivo" name="efectivo"  />
                                    </div>       
                                    <div class="controls-row" >
                                        <label for="tarjeta">Tarjeta:</label>
                                        <input type="text" id="tarjeta" name="tarjeta" ng-model="pagoempresa.tarjeta" />
                                    </div>       
                                    <div class="controls-row" >
                                        <label for="efectivo">Cheque:</label>
                                        <input type="text" id="cheque" name="cheque" ng-model="pagoempresa.cheque" />
                                    </div>       
                                    <div class="controls-row" >
                                        <label for="transfer">Deposito:</label>
                                        <input type="text" id="deposito" name="transfer" ng-model="pagoempresa.deposito" />
                                        <input id="noBoleta" ng-show="pagoempresa.deposito>0" type="text" name="boleta" ng-model="pagoempresa.boleta" />
                                    </div>
                                </fieldset>
                            </div>
                            <div style="margin-top: 5px;" ng-show="pagoempresa.cheque>0" id="datoscheque" >
                                <div>
                                    <fieldset> <legend>Datos de Cheque</legend>
                                        <div class="controls-row">
                                            <label for="numero">Numero de Cheque:</label>
                                            <input required id="noCheque" type="text" ng-model="datoscheque.numero" name="numero"  />
                                        </div>                                        
                                        <div class="controls-row">
                                            <label for="banco">Banco:</label>
                                            <select required name="banco" id="banco" ng-model="datoscheque.banco">
                                                <option value="" selected="selected">Seleccionar</option>
                                                <option value="BI" title="Banco Industrial, S.A.">Banco Industrial, S.A.</option>
                                                <option value="GYT" title="Banco G&amp;T Continental, S.A.">Banco G&amp;T Continental, S.A.</option>
                                                <option value="BAM" title="Banco Agromercantil de Guatemala, S.A.">BAM</option>
                                                <option value="REFORMADOR" title="Banco Reformador, S.A.">Banco Reformador, S.A.</option>
                                                <option value="CITY" title="Banco Citibank de Guatemala, S.A.">CITI</option>
                                                <option value="BanRural" title="Banco de Desarrollo Rural, S.A.">BANRURAL</option>
                                                <option value="Internacional" title="Banco Internacional, S.A.">INTERBANCO</option>
                                                <option value="Promerica" title="Banco Promerica, S.A.">Banco Promerica, S.A.</option>
                                                <option value="BAC" title="Banco de Am&eacute;rica Central, S.A.">BAC</option>
                                                <option value="CHN" title="El Cr&eacute;dito Hipotecario Nacional de Guatemala">CHN</option>
                                                <option value="Inmobiliario" title="Banco Inmobiliario, S.A.">Banco Inmobiliario, S.A.</option>
                                                <option value="Vivibanco" title="Primer Banco de Ahorro y Pr&eacute;stamo para la Vivienda Familiar, S.A.">VIVIBANCO</option>
                                                <option value="TRABAJADORES" title="Banco de los Trabajadores">Banco de los Trabajadores</option>
                                                <option value="FICOHSA" title="Banco Ficohsa Guatemala, S.A.">Banco Ficohsa Guatemala, S.A.</option>
                                                <option value="ANTIGUA" title="Banco de Antigua, S.A.">Banco de Antigua, S.A.</option>
                                                <option value="CREDITO" title="Banco de Cr&eacute;dito, S.A.">Banco de Cr&eacute;dito, S.A.</option>
                                                <option value="AZTECA" title="Banco Azteca de Guatemala, S.A.">Banco Azteca de Guatemala, S.A.</option>
                                                <option value="Otro">Otro</option>
                                            </select>    
                                        </div>
                                        <div class="controls-row">
                                            <label for="fecha_cheque">Fecha Pago:</label>
                                            <input ng-model="datoscheque.fecha" datepicker  required type="text" name="fecha_cheque" id="fecha_cheque" />
                                        </div>
                                    </fieldset>
                                </div>
                            </div>
                        </div>
                        <div class="modal-footer">
                            <button aria-hidden="true" data-dismiss="modal" class="btn">Cancelar</button>
                            <button ng-show="pagoempresa.efectivo>0||pagoempresa.cheque>0||pagoempresa.tarjeta>0||pagoempresa.boleta>0" 
                                    ng-click="generarFactura();" type="button" class="btn btn-primary" >Generar Factura</button>
                        </div>
                    </div>
                </div>
            </div>
            <div id="windescarga" class="modal hide fade" tabindex="-2" role="dialog" aria-labelledby="winlbl" aria-hidden="true">
                <div class="modal-header">
                    <h3 id="winlbl">Facturacion</h3>
                </div>
                <div class="modal-body">
                    <div id="iframecontainer"></div>
                    <div class="modal-footer">
                        <button type="button" id="descargaRespaldo" class="btn btn-primary" >Detalle</button>
                        <button aria-hidden="true" data-dismiss="modal" onClick="window.location.reload();" class="btn">Finalizar</button>
                    </div>
                </div>
            </div>
            <script type="text/javascript">
                var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value
                $.fn.bootstrapBtn = bootstrapButton; // give $().bootstrapBtn the bootstrap functionality        

                var cargosLs = new Array();
                var formatCtrls = function() {
                    $("button,a").each(function() {
                        $(this).addClass("btn");
                    });
                    $('#tabs_cont a').click(function(e) {
                        e.preventDefault();
                        $(this).tab('show');
                    });
                    $("input[type='checkbox']").each(function() {
                        $(this).attr("checked", false);
                    });
                    $("input[name*='txt_']").each(function() {
                        $(this).keyup(function() {
                            var val = parseFloat($(this).val());
                            var idCargo = $(this).attr("alt");
                            var fCargos = cargosLs.filter(function(c) {
                                return c.ID === idCargo;
                            });
                            if (!isNaN(val)) {
                                if (fCargos[0].TOT < val) {
                                    alert("El valor a pagar debe ser menor o igual al valor del cargo!");
                                    $(this).val(fCargos[0].TOT);
                                    return;
                                }
                                fCargos[0].ABONO = val;
                            } else {
                                alert("Valor Invalido!!");
                                $(this).val(fCargos[0].TOT);
                            }
                        });
                    });
                };

                $(document.body).ready(formatCtrls);

                var marcar = function(cargo, btn) {
                    $("#txt_" + cargo.ID).attr("readonly", !btn.checked);
                    if (btn.checked) {
                        cargo.ABONO = cargo.TOT;
                        cargosLs.push(cargo);
                    }
                };

            </script>
            <script type="text/javascript">
                var numero = "";
                var app = angular.module('cargos-app', []);
                app.controller('cargos-area', function($scope, $rootScope, $timeout) {
                    $scope.pagoempresa = {empresa: "", cheque: 0, deposito: 0, tarjeta: 0, efectivo: 0,
                        estudiantes: new Array(), total: 0, fechapago: "<?php echo date("Y-m-d"); ?>"};
                    $scope.estudiantes = new Array();
                    $scope.facturar = false;
                    $scope.datoscheque = {numero: "", fecha: "", banco: ""};
                    
                    
                    $scope.nuevaFactura = function(){
                        $scope.limpiarTodo();
                        window.location.reload();
                    };
                    
                    $scope.undoEst = function() {
                        $("#listaCargosEstudiante").html("");
                        $("#opcionescargos1").hide();
                        $("#opcionescargos2").hide();
                        cargosLs = new Array();
                        selEst = null;
                    };
                    $scope.generarFactura = function() {
                        
                        if($scope.pagoempresa.status == 2){
                            $scope.pagoempresa.cheque = 0;
                            $scope.pagoempresa.deposito = 0;
                            $scope.pagoempresa.tarjeta = 0;
                            $scope.pagoempresa.efectivo = 0;
                        }else{
                            var pagototal = parseFloat($scope.pagoempresa.efectivo) +
                                    parseFloat($scope.pagoempresa.cheque)
                                    + parseFloat($scope.pagoempresa.deposito)
                                    + parseFloat($scope.pagoempresa.tarjeta);
                            if (pagototal > $scope.pagoempresa.total) {
                                alert("El monto a pagar excede al total por " + eval(pagototal - $scope.pagoempresa.total) + "!!" );
                                return false;
                            }
                            if (pagototal < $scope.pagoempresa.total) {
                                alert("El monto a pagar es menor al total por " + eval($scope.pagoempresa.total - pagototal) + "!!");
                                return false;
                            }
                            if ($scope.pagoempresa.cheque > 0) {
                                if ($scope.datoscheque.numero.length <= 0 ||
                                        $("#fecha_cheque").val() === "" ||
                                        $scope.datoscheque.fecha.banco <= 0) {
                                    alert("Los datos del cheque no estan completos!");
                                    return false;
                                }
                            }
                            if ($scope.pagoempresa.deposito > 0
                                    && $scope.pagoempresa.boleta.length <= 0) {
                                alert("Debe indicar el numero de boleta del deposito!");
                                return false;
                            }
                        }
                        $scope.pagoempresa.estudiantes = $scope.estudiantes;
                        $scope.pagoempresa.datoscheque = $scope.datoscheque;
                        $.ajax({type: "POST", url: 'data.php?op=facturar',
                            data: {data: JSON.stringify($scope.pagoempresa)},
                            complete: function(data) {
                                data = $.parseJSON(data.responseText);
                                alert("Factura: " + data.factura);
                                window.numeroFact = data.factura;
                                $scope.limpiarTodo();
                                if (parseInt(data.result) > 0) {
                                    $('#formapagomodal').modal("hide");
                                    $scope.descargarFactura(data.factura);
                                } else {
                                    alert(data.error);
                                    return;
                                }
                                $scope.limpiarTodo();
                            },
                            dataType: "json"});
                    };
                    $scope.descargarFactura = function(numero) {
                        $(function() {
                            var $facturaWin = $("#windescarga");
                            //alert(window.numeroFact);
                            $facturaWin.modal();
                            $("#iframecontainer").html("");
                            var $iframe = $("<iframe>")
                                    .prop("src", "data.php?op=print&print=main&NUMERO=" + numero)
                                    .appendTo($("#iframecontainer"));
                            
                        });
                    };
                    
                    $("#descargaRespaldo").click(function() {
                        $(function() {
                            var $facturaWin = $("#windescarga");
                            //alert(window.numeroFact);
                            $facturaWin.modal();
                            $("#iframecontainer").html("");
                            var $iframe = $("<iframe>")
                                    .prop("src", "data.php?op=print&print=back&NUMERO=" + window.numeroFact)
                                    .appendTo($("#iframecontainer"));
                        });
                    });
                    
                    $scope.descargarFactura2 = function(numero) {
                        $(function() {
                            var $preparingFileModal = $("#windescarga");
                            $preparingFileModal.modal();

                            $.fileDownload("data.php?op=print&NUMERO=" + numero, {
                                successCallback: function(url) {
                                    $preparingFileModal.modal("hide");
                                },
                                failCallback: function(responseHtml, url) {
                                    $preparingFileModal.modal("hide");
                                    alert("No se pudo realizar la descarga! " + responseHtml)
                                }
                            });

                        });
                    };
                    $scope.preparaFactura = function() {
                        $("#efectivo,#tarjeta,#cheque,#deposito,#noCheque,#noBoleta").val("");
                        if ($("#estadofac").val() === "") {
                            alert("Seleccione el estado de la factura");
                            return false;
                        }
                        $("#fecha_cheque").val($("#fechapago").val());
                        $scope.facturar = true;
                        $scope.efectivo = $scope.pagoempresa.total;
                        if($scope.pagoempresa.status === 2){
                            $scope.generarFactura();
                        }else{
                            $('#formapagomodal').modal();
                        }
                    };
                    $scope.limpiarTodo = function() {
                        $scope.estudiantes = new Array();
                        $scope.facturar = false;
                        $scope.undoEst();
                        $scope.updateTotal();
                        $scope.pagoempresa.cheque = 0;
                    };
                    $scope.updateTotal = function() {
                        $scope.pagoempresa.total = 0.00;
                        $.each($scope.estudiantes, function() {
                            $.each(this.cargos, function() {
                                $scope.pagoempresa.total = parseFloat($scope.pagoempresa.total) + parseFloat(this.ABONO);
                            });
                        });
                    };

                    $scope.delEst = function(carnet) {
                        var $r = $scope.estudiantes.filter(function(e) {
                            return carnet !== e.CARNET;
                        });
                        $scope.estudiantes = $r;
                        $scope.updateTotal();
                    };

                    $scope.addEst = function() {
                        var tmp = $scope.estudiantes.filter(function(e) {
                            return selEst.CARNET === e.CARNET;
                        });
                        if (tmp.length > 0) {
                            if (!confirm('El estudiante ya tiene cargos a pagar, desea reemplazar sus datos!')) {
                                return;
                            } else {
                                $scope.estudiantes = $scope.estudiantes.filter(function(e) {
                                    return selEst.CARNET !== e.CARNET;
                                });
                            }
                        }
                        selEst.cargos = cargosLs;
                        $scope.estudiantes.push(selEst);

                        $.each(selEst.cargos, function() {
                            selEst.PAGO_TOT = selEst.PAGO_TOT + parseFloat(this.ABONO);
                            $scope.pagoempresa.total = $scope.pagoempresa.total + parseFloat(this.ABONO);
                        });

                        $scope.undoEst();
                        $scope.updateTotal();
                    };
                });
            </script>
            <script src="../../js/angular.ea.libs.js" type="text/javascript"></script>
        </form>
    </body>
</html>
